package it.mercatino.datiUtente;

import java.util.Map;

import it.mercatino.hibernate.Utente;
import it.mercatino.utenti.UtenteUtil;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

/**
 * Action che viene richiamata quando l'utente accede alla pagina
 * di modifica del proprio profilo.
 * 
 * @author Luvi
 *
 */
public class ModificaDatiUtenteAction extends ActionSupport{

	private static final long serialVersionUID = 1L;
	
	private Utente utente;
	
	/**
	 * Vengono preparati i dati utili per la visualizzazione della pagina.
	 * 
	 * @return "success", se si hanno i diritti di accesso alla pagina.<br>
	 * "error", se non si hanno i diritti di accesso alla pagina.
	 * 
	 */
	@org.apache.struts2.interceptor.validation.SkipValidation	
	public String execute() {
		
		Map session = ActionContext.getContext().getSession();	
		utente = (Utente)session.get("loggedUser");
		if (utente != null)
			return SUCCESS;
		else
			return ERROR;
	}
	
	/**
	 * Vengono memorizzate le modifiche al profilo.
	 * 
	 * @return "success", se si hanno i diritti di accesso alla pagina.<br>
	 * "error", se non si hanno i diritti di accesso alla pagina.
	 * 
	 */
	public String updateUser() {
		
		Map session = ActionContext.getContext().getSession();	
		Utente user = (Utente)session.get("loggedUser");
		if (user != null && user.getUsername().equals(utente.getUsername())) {
			UtenteUtil.getInstance().updateUtente(utente, utente.getUsername());
			session.put("loggedUser", UtenteUtil.getInstance().getUtentebyUsername(utente.getUsername()));
			addActionMessage("Modifiche salvate con successo!");
			return SUCCESS;
		} else {
			return ERROR;
		}
		
	}

	/**
	 * @return the utente
	 */
	public Utente getUtente() {
		return utente;
	}

	/**
	 * @param utente the utente to set
	 */
	public void setUtente(Utente utente) {
		this.utente = utente;
	}

}
